/**
 * commitlint.config.mjs
 */
import { RuleConfigSeverity } from "@commitlint/types"

const Configuration = {
    /**
     * Resolve and load @commitlint/config-conventional from node_modules.
     * Referenced packages must be installed
     */
    extends: ["@commitlint/config-conventional"],
    /**
     * Resolve and load conventional-changelog-atom from node_modules.
     * Referenced packages must be installed
     * 配置用于解析提交消息的解析器预设
     * 这意味着可以使用已安装的 npm 软件包
     * conventional-changelog-atom
     * conventional-changelog-angular
     * conventional-changelog-conventionalcommits
     */
    parserPreset: "conventional-changelog-atom",
    /**
     * Resolve and load @commitlint/format from node_modules.
     * Referenced package must be installed
     * 如果有必要，委员会可以以不同的格式输出所遇到的问题
     */
    formatter: "@commitlint/format",
    /**
     * Any rules defined here will override rules from @commitlint/config-conventional
     * https://commitlint.js.org/reference/rules.html
     */
    rules: {
        /**
         * 0 - Disabled
         * 1 - Warning
         * 2 - Error
         */
        // "header-max-length": [RuleConfigSeverity.Error, "always", 72],
        // "type-case": [RuleConfigSeverity.Disabled],
        // "type-empty": [RuleConfigSeverity.Disabled, "always"],
        // "scope-empty": [RuleConfigSeverity.Disabled],
        // "scope-case": [RuleConfigSeverity.Disabled],
        // "subject-full-stop": [RuleConfigSeverity.Disabled, "never"],
        // "subject-case": [RuleConfigSeverity.Disabled, "never"],
        /**
         * type-enum default = [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]
         * defined here will override default
         *
         * build        编译相关的修改，例如发布版本、对项目构建或者依赖的改动
         * chore        构建过程或辅助工具的变动
         * ci           持续集成修改
         * docs         仅文档新增/改动
         * feat         新功能 (feature / Feature)
         * fix          修补某功能的 bug
         * refactor     重构某个功能
         * perf         优化相关，比如提升性能、体验
         * refactor     代码重构
         * revert       回滚到上一个版本
         * style        代码样式修改, 注意不是 css 修改
         * test         测试用例修改
         */
        "type-enum": [
            RuleConfigSeverity.Error,
            "always",
            ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test"],
        ],
    },
    /**
     * Array of functions that return true if commitlint should ignore the given message.
     * Given array is merged with predefined functions, which consist of matchers like:
     *
     * - 'Merge pull request', 'Merge X into Y' or 'Merge branch X'
     * - 'Revert X'
     * - 'v1.2.3' (ie semver matcher)
     * - 'Automatic merge X' or 'Auto-merged X into Y'
     *
     * To see full list, check https://github.com/conventional-changelog/commitlint/blob/master/%40commitlint/is-ignored/src/defaults.ts.
     * To disable those ignores and run rules always, set `defaultIgnores: false` as shown below.
     */
    // ignores: [(commit) => commit === ""],
    /**
     * Whether commitlint uses the default ignore rules, see the description above.
     */
    // defaultIgnores: true,
    /**
     * Custom URL to show upon failure
     */
    // helpUrl: "https://github.com/conventional-changelog/commitlint/#what-is-commitlint",
    /**
     * Custom prompt configs
     */
    prompt: {
        settings: {
            /**
             * Enable multiple scopes, select scope with a radio list, disabled by default.
             */
            // enableMultipleScopes: true,
            /**
             * Commitlint supports multiple scopes, you can specify the delimiter.
             * It is applied when enableMultipleScopes set true.
             */
            // scopeEnumSeparator: ",",
        },
        messages: {
            /**
             * The field can be skipped by pressing enter
             */
            // skip: ":skip",
            /**
             * Maximum number of characters
             */
            // max: "upper %d chars",
            // min: "%d chars at least",
            // emptyWarning: "can not be empty",
            // upperLimitWarning: "over limit",
            // lowerLimitWarning: "below limit",
        },
        questions: {
            // type: {
            //     description: "please input type:",
            // },
        },
    },
}
export default Configuration
